package com.itheima.controller;

import com.itheima.pojo.Address;
import com.itheima.pojo.Result;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.ArrayList;
import java.util.List;

/**
 * 测试响应数据
 *
 *设置响应数据：
 *  @ResponseBody：
 *  类型：方法注解、类注解
 *  位置：Controller方法上/类上
 *  作用：将方法的返回值直接作为响应数据响应给客户端浏览器。如果方法的返回值类型是实体对象/集合，将会先转换为JSON格式，然后再响应给客户端浏览器
 *  说明：@RestController = @Controller + @ResponseBody ;
 *
 * 定义的每一个对外暴露的这个方法，都称之为一个功能接口，
 * 而项目开发中需要的开发文档就是用来描述这个功能接口的请求路径，请求参数，以及响应的数据
 *
 * 弹幕：这里的接口的意思是前后端数据交互的接口，这里接受前端数据请求，同时根据前端请求返回后端响应
 *      这样学才有意思，紧张兮兮地，一句怕漏，那上刑一样的，我反正顶不住
 */
@RestController
public class ResponseController {

   /* @RequestMapping("/hello")
    public String hello(){
        System.out.println("Hello World ~");
        return "Hello World ~";
    }

    @RequestMapping("/getAddr")
    public Address getAddr(){
        Address addr = new Address();
        addr.setProvince("广东");
        addr.setCity("深圳");
        return addr;
    }


    //会返回一个JSON格式的数组，外面是[],里面的每一对{}都代表一个对象
    @RequestMapping("/listAddr")
    public List<Address> listAddr(){
        List<Address> list = new ArrayList<>();

        Address addr = new Address();
        addr.setProvince("广东");
        addr.setCity("深圳");

        Address addr2 = new Address();
        addr2.setProvince("陕西");
        addr2.setCity("西安");

        list.add(addr);
        list.add(addr2);
        return list;
    }
*/



    /*
    把上面的改造一下：
    统一一个响应结果，这个结果需要做到通用性，可以考虑用一个实体对象result来接收，让所有方法的返回值统一设置为result
     */
    @RequestMapping("/hello")
    public Result hello(){
        System.out.println("Hello World ~");
        //return new Result(1,"success","Hello World ~");
        //把上面那行代码改造一下，直接调用result里面的success方法
        return Result.success("Hello World ~");
    }

    @RequestMapping("/getAddr")
    public Result getAddr(){
        Address addr = new Address();
        addr.setProvince("广东");
        addr.setCity("深圳");
        return Result.success(addr);
    }

    @RequestMapping("/listAddr")
    public Result listAddr(){
        List<Address> list = new ArrayList<>();

        Address addr = new Address();
        addr.setProvince("广东");
        addr.setCity("深圳");

        Address addr2 = new Address();
        addr2.setProvince("陕西");
        addr2.setCity("西安");

        list.add(addr);
        list.add(addr2);
        return Result.success(list);
    }

}
